\section{Related Work}

\subsection{GNU-Prolog FD Solver}
The key reference for this work was GNU-Prolog compiler's integrated FD solver
\cite{GNU-Prolog}. It only considers variables taking integer values, bounded in
size. This allows for a simple ``range'' representation of the variable's
domain. Those ranges are updated with every prolog instruction. This works just
fine because of prolog's declarative nature. Each declaration can be seen as a
constraint. As soon as a variable's domain is made non-continuous by a rule, its
representation is changed from a range (simply a \textit{min} and a \textit{max}
value) to a vector of possible variables. To avoid excessive space consumption,
the maximal value admitted in a vector is usually smaller than that accepted
in ranges, resulting on some values being omitted.

\subsection{Others}
The research on Finite Domains in general and on Constraint Solving Problems
over Finite Domains is a rather active field, and a few languages (besides the
already mentioned Prolog), try to integrate Finite Domains Modelisation or
Constraint Solving. \cite{finite-domains, mozart-oz, erlang, entailment} are particularly relevant.
